package 矩阵

/*
https://leetcode.cn/problems/search-a-2d-matrix-ii/?envType=study-plan-v2&envId=top-100-liked

240. 搜索二维矩阵 II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性：

每行的元素从左到右升序排列。
每列的元素从上到下升序排列。

示例 1：
输入：matrix = [
[1,4,7,11,15],
[2,5,8,12,19],
[3,6,9,16,22],
[10,13,14,17,24],
[18,21,23,26,30]], target = 5
输出：true

示例 2：
输入：matrix = [
[1,4,7,11,15],
[2,5,8,12,19],
[3,6,9,16,22],
[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出：false
*/
//法二代码
func searchMatrix(matrix [][]int, target int) bool {
	if matrix == nil || len(matrix) == 0 || len(matrix[0]) == 0 { //非法判断
		return false
	}

	curRow := 0                  //当前行
	curCol := len(matrix[0]) - 1 //当前列

	//判断方向是从右上角向左下角移动下标进行判断
	for curCol >= 0 && curRow < len(matrix) {
		if matrix[curRow][curCol] == target {
			return true
		} else if matrix[curRow][curCol] > target {
			curCol--
		} else {
			curRow++
		}
	}

	return false
}
